package controle;

import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.List;

import modelo.Usuario;
import dao.DAOFactory;
import dao.UsuarioDAO;

public class ControleUsuario {

	public void salvar(Usuario usuario) throws Exception {
		if (usuario.getNome().trim().isEmpty()) {
			throw new Exception("O nome � obrigat�rio!");
		} else if (usuario.getLogin().trim().isEmpty()) {
			throw new Exception("O Login � obrigat�rio!");
		} else if (usuario.getSenha().trim().isEmpty()) {
			throw new Exception("A senha � obrigat�ria!");
		} 
		
		UsuarioDAO usuarioDao = DAOFactory.getUsuarioDAO();
		if (usuario.getIdUsuario() == 0) {
			usuarioDao.salvar(usuario);
		} else {
			usuarioDao.alterar();
		}
	}
		
	public List<Usuario> listarTodos() {
		UsuarioDAO usuarioDao = DAOFactory.getUsuarioDAO();
		return usuarioDao.buscarTodos();
	}
	
	public void excluir(Usuario usuario) {
		UsuarioDAO usuarioDao = DAOFactory.getUsuarioDAO();
		usuarioDao.excluir(usuario);
	}
	
	public Usuario autenticarUsuario(String login, String senha) {
		UsuarioDAO usuarioDao = DAOFactory.getUsuarioDAO();
		return usuarioDao.autenticarUsuario(login, senha);
	}
	
	public String criptografa(String senha) {
		String criptografa = null;  
        if(null == senha) return null;            
        try{  
            MessageDigest digest = MessageDigest.getInstance("MD5");               
            digest.update(senha.getBytes(), 0, senha.length());                
			criptografa = new BigInteger(1,digest.digest()).toString(16);                
           //System.out.println(md5);            
        }catch(NoSuchAlgorithmException e){  
            e.printStackTrace();  
        }  
        return criptografa;  
	}
	
	
}
